package br.com.web.panificadora.beans;

import java.math.BigDecimal;
import java.sql.Date;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;

public class Manifesto {

	private int id;
	private Cliente cliente;
	private Date dataCriacao;
	private Date dataPedido;
	private Entrega entrega;
	private Usuario motorista;
	private Usuario atendente;
	private Usuario representate;
	private Set<Produto> produtos;
	private int formaPagamento;
	private Date dataPagamento;
	private Fermentacao fermentacao;
	private BigDecimal valorTotal;
	private String observacao;
	private int tipoEntrega;
	private boolean ativo;
	
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	@ManyToOne
	@JoinColumn(name="id_cliente")
	public Cliente getCliente() {
		return cliente;
	}
	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}
	public Date getDataCriacao() {
		return dataCriacao;
	}
	public void setDataCriacao(Date dataCriacao) {
		this.dataCriacao = dataCriacao;
	}
	public Date getDataPedido() {
		return dataPedido;
	}
	public void setDataPedido(Date dataPedido) {
		this.dataPedido = dataPedido;
	}
	@ManyToOne
	@JoinColumn(name="id_entrega")
	public Entrega getEntrega() {
		return entrega;
	}
	public void setEntrega(Entrega entrega) {
		this.entrega = entrega;
	}
	@ManyToOne
	@JoinColumn(name="id_motorista")
	public Usuario getMotorista() {
		return motorista;
	}
	public void setMotorista(Usuario motorista) {
		this.motorista = motorista;
	}
	@ManyToOne
	@JoinColumn(name="id_atendente")
	public Usuario getAtendente() {
		return atendente;
	}
	public void setAtendente(Usuario atendente) {
		this.atendente = atendente;
	}
	
	@Column(name="forma_pagamento")
	public int getFormaPagamento() {
		return formaPagamento;
	}
	public void setFormaPagamento(int formaPagamento) {
		this.formaPagamento = formaPagamento;
	}
	
	@ManyToOne
	@JoinColumn(name="id_fermentacao")
	public Fermentacao getFermentacao() {
		return fermentacao;
	}
	public void setFermentacao(Fermentacao fermentacao) {
		this.fermentacao = fermentacao;
	}
	@Column(name="ativo")
	public boolean isAtivo() {
		return ativo;
	}
	public void setAtivo(boolean ativo) {
		this.ativo = ativo;
	}
	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "produto")
	public Set<Produto> getProdutos() {
		return produtos;
	}
	public void setProdutos(Set<Produto> produtos) {
		this.produtos = produtos;
	}
	@ManyToOne
	@JoinColumn(name="id_representante")
	public Usuario getRepresentate() {
		return representate;
	}
	public void setRepresentate(Usuario representate) {
		this.representate = representate;
	}
	@Column(name="valor_total")
	public BigDecimal getValorTotal() {
		return valorTotal;
	}
	public void setValorTotal(BigDecimal valorTotal) {
		this.valorTotal = valorTotal;
	}
	@Column(name="data_pagamento")
	public Date getDataPagamento() {
		return dataPagamento;
	}
	public void setDataPagamento(Date dataPagamento) {
		this.dataPagamento = dataPagamento;
	}
	@Column(name="obeservacao")
	public String getObservacao() {
		return observacao;
	}
	public void setObservacao(String observacao) {
		this.observacao = observacao;
	}
	@Column(name="tipo_entrega")
	public int getTipoEntrega() {
		return tipoEntrega;
	}
	public void setTipoEntrega(int tipoEntrega) {
		this.tipoEntrega = tipoEntrega;
	}
	
}
